home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2002 November / SGI IRIX Base Documentation 2002 November.iso / usr / share / catman / p_man / cat3 / ftn / mp.z / mp
Encoding:
Text File  |  2002-10-03  |  24.0 KB  |  415 lines

  1. MP(3F)                                                Last changed: 1-25-99
  2.  
  3.  
  4. NNAAMMEE
  5.      MMPP__BBAARRRRIIEERR, MMPP__BBLLOOCCKK, MMPP__BBLLOOCCKKTTIIMMEE, MMPP__CCRREEAATTEE, MMPP__DDEESSTTRROOYY,
  6.      MMPP__IINN__DDOOAACCRROOSSSS__LLOOOOPP, MMPP__IISS__MMAASSTTEERR, MMPP__MMYY__TTHHRREEAADDNNUUMM, MMPP__NNUUMMTTHHRREEAADDSS,
  7.      MMPP__SSEETT__NNUUMMTTHHRREEAADDSS, MMPP__SSEETT__SSLLAAVVEE__SSTTAACCKKSSIIZZEE MMPP__SSEETTLLOOCCKK, MMPP__SSEETTUUPP,
  8.      MMPP__SSUUGGGGEESSTTEEDD__NNUUMMTTHHRREEAADDSS, MMPP__UUNNBBLLOOCCKK, MMPP__UUNNSSEETTLLOOCCKK, MMPP__SSHHMMEEMM__GGEETT3322,
  9.      MMPP__SSHHMMEEMM__PPUUTT3322, MMPP__SSHHMMEEMM__IIGGEETT3322, MMPP__SSHHMMEEMM__IIPPUUTT3322, MMPP__SSHHMMEEMM__GGEETT6644,
  10.      MMPP__SSHHMMEEMM__PPUUTT6644, MMPP__SSHHMMEEMM__IIGGEETT6644, MMPP__SSHHMMEEMM__IIPPUUTT6644 - Fortran
  11.      multiprocessing utility routines
  12.  
  13. SSYYNNOOPPSSIISS
  14.      SSUUBBRROOUUTTIINNEE MMPP__BBLLOOCCKK(())
  15.  
  16.      SSUUBBRROOUUTTIINNEE MMPP__UUNNBBLLOOCCKK(())
  17.  
  18.      SSUUBBRROOUUTTIINNEE MMPP__BBLLOOCCKKTTIIMMEE((_i_t_e_r_s))
  19.      IINNTTEEGGEERR _i_t_e_r_s
  20.  
  21.      SSUUBBRROOUUTTIINNEE MMPP__SSEETTUUPP(())
  22.  
  23.      SSUUBBRROOUUTTIINNEE MMPP__CCRREEAATTEE((_n_u_m)
  24.      IINNTTEEGGEERR _n_u_m
  25.  
  26.      SSUUBBRROOUUTTIINNEE MMPP__DDEESSTTRROOYY(())
  27.  
  28.      IINNTTEEGGEERR FFUUNNCCTTIIOONN MMPP__NNUUMMTTHHRREEAADDSS(())
  29.  
  30.      SSUUBBRROOUUTTIINNEE MMPP__SSEETT__NNUUMMTTHHRREEAADDSS((_n_u_m))
  31.      IINNTTEEGGEERR _n_u_m
  32.  
  33.      IINNTTEEGGEERR FFUUNNCCTTIIOONN MMPP__MMYY__TTHHRREEAADDNNUUMM(())
  34.  
  35.      IINNTTEEGGEERR FFUUNNCCTTIIOONN MMPP__IISS__MMAASSTTEERR(())
  36.  
  37.      SSUUBBRROOUUTTIINNEE MMPP__SSEETTLLOOCCKK(())
  38.  
  39.      IINNTTEEGGEERR FFUUNNCCTTIIOONN MMPP__SSUUGGGGEESSTTEEDD__NNUUMMTTHHRREEAADDSS((_n_u_m))
  40.      IINNTTEEGGEERR _n_u_m
  41.  
  42.      SSUUBBRROOUUTTIINNEE MMPP__UUNNSSEETTLLOOCCKK(())
  43.  
  44.      SSUUBBRROOUUTTIINNEE MMPP__BBAARRRRIIEERR(())
  45.  
  46.      LLOOGGIICCAALL FFUUNNCCTTIIOONN MMPP__IINN__DDOOAACCRROOSSSS__LLOOOOPP(())
  47.  
  48.      SSUUBBRROOUUTTIINNEE MMPP__SSEETT__SSLLAAVVEE__SSTTAACCKKSSIIZZEE((_s_i_z_e))
  49.      IINNTTEEGGEERR _s_i_z_e
  50.  
  51.      MMPP__SSHHMMEEMM__GGEETT3322 (_t_a_r_g_e_t,, _s_o_u_r_c_e,, _l_e_n_g_t_h,, _s_o_u_r_c_e__t_h_r_e_a_d))
  52.  
  53.      MMPP__SSHHMMEEMM__PPUUTT3322 ((_t_a_r_g_e_t,, _s_o_u_r_c_e,, _l_e_n_g_t_h,, _t_a_r_g_e_t__t_h_r_e_a_d))
  54.  
  55.      MMPP__SSHHMMEEMM__IIGGEETT3322 ((_t_a_r_g_e_t,, _s_o_u_r_c_e,, _t_a_r_g_e_t__i_n_c,, _s_o_u_r_c_e__i_n_c,, _l_e_n_g_t_h,,
  56.      _s_o_u_r_c_e__t_h_r_e_a_d))
  57.  
  58.      MMPP__SSHHMMEEMM__IIPPUUTT3322 ((_t_a_r_g_e_t,, _s_o_u_r_c_e,, _t_a_r_g_e_t__i_n_c,, _s_o_u_r_c_e__i_n_c,, _l_e_n_g_t_h,,
  59.      _t_a_r_g_e_t__t_h_r_e_a_d))
  60.  
  61.      MMPP__SSHHMMEEMM__GGEETT6644 ((_t_a_r_g_e_t,, _s_o_u_r_c_e,, _l_e_n_g_t_h,, _s_o_u_r_c_e__t_h_r_e_a_d))
  62.  
  63.      MMPP__SSHHMMEEMM__PPUUTT6644 ((_t_a_r_g_e_t,, _s_o_u_r_c_e,, _l_e_n_g_t_h,, _t_a_r_g_e_t__t_h_r_e_a_d))
  64.  
  65.      MMPP__SSHHMMEEMM__IIGGEETT6644 ((_t_a_r_g_e_t,, _s_o_u_r_c_e,, _t_a_r_g_e_t__i_n_c,, _s_o_u_r_c_e__i_n_c,, _l_e_n_g_t_h,,
  66.      _s_o_u_r_c_e__t_h_r_e_a_d))
  67.  
  68.      MMPP__SSHHMMEEMM__IIPPUUTT6644 ((_t_a_r_g_e_t,, _s_o_u_r_c_e,, _t_a_r_g_e_t__i_n_c,, _s_o_u_r_c_e__i_n_c,, _l_e_n_g_t_h,,
  69.      _t_a_r_g_e_t__t_h_r_e_a_d))
  70.  
  71. IIMMPPLLEEMMEENNTTAATTIIOONN
  72.      IRIX systems
  73.  
  74. DDEESSCCRRIIPPTTIIOONN
  75.      The multiprocessing routines help control the level of parallelism
  76.      used in Fortran programs.  They should not be needed by most programs,
  77.      but they can help to tune some applications.  These routines are as
  78.      follows:
  79.  
  80.      * MMPP__BBLLOOCCKK uses the bblloocckkpprroocc(2) system call to put all slave threads
  81.        to sleep.  This frees the processors for use by other jobs.  This
  82.        routine is useful if it is known that the slaves will not be needed
  83.        for some time and the machine is being shared by several users.
  84.        Calls to MMPP__BBLLOOCCKK cannot be nested; a warning is issued if an
  85.        attempt to do so is made.
  86.  
  87.      * MMPP__UUNNBBLLOOCCKK wakes up slave threads that were previously blocked by a
  88.        call to MMPP__BBLLOOCCKK.  You cannot unblock threads that are not currently
  89.        blocked; a warning is issued if an attempt is made to do so.
  90.  
  91.        It is not necessary to call MMPP__UUNNBBLLOOCCKK explicitly.  When a Fortran
  92.        parallel region is entered, a check is made, and if the slaves are
  93.        currently blocked, a call is made to MMPP__UUNNBBLLOOCCKK automatically.
  94.  
  95.      * MMPP__BBLLOOCCKKTTIIMMEE controls the amount of time a slave thread waits for
  96.        work before giving up.  When enough time has elapsed, the slave
  97.        thread blocks itself.  This automatic blocking is independent of the
  98.        user-level blocking provided by the MMPP__BBLLOOCCKK and MMPP__UUNNBBLLOOCCkk calls.
  99.        Slave threads that have blocked themselves are unblocked
  100.        automatically upon entering a parallel region.
  101.  
  102.        The _i_t_e_r_s argument to MMPP__BBLLOOCCKKTTIIMMEE specifies the number of times to
  103.        spin in the wait loop.  By default, it is set to 10,000,000.  This
  104.        takes about .25 seconds on a 200MHz processor.  As a special case,
  105.        an argument of 00 disables the automatic blocking, which allows the
  106.        slaves to spin-wait without limit.  The environment variable
  107.        MMPP__BBLLOOCCKKTTIIMMEE can be set to an integer value.  It acts like an
  108.        implicit call to MMPP__BBLLOOCCKKTTIIMMEE during program startup.  For more
  109.        information on the MMPP__BBLLOOCCKKTTIIMMEE environment variable, see
  110.        ppee__eennvviirroonn(5).
  111.  
  112.      * MMPP__DDEESSTTRROOYY deletes the slave threads.  They are stopped by forcing
  113.        them to call the eexxiitt(2) system call.  In general, doing this is
  114.        discouraged.  MMPP__BBLLOOCCkk can be used in most cases.
  115.  
  116.      * MMPP__CCRREEAATTEE creates and initializes threads.  Its _n_u_m argument
  117.        specifies the number of threads to create.  Because the calling
  118.        thread already counts as one, MMPP__CCRREEAATTEE actually creates _n_u_m - 1 new
  119.        slave threads.
  120.  
  121.      * MMPP__SSEETTUUPP creates and initializes threads.  It calls MMPP__CCRREEAATTEE using
  122.        the current default number of threads.  Unless otherwise specified,
  123.        the default number is equal to the number of CPUs currently on the
  124.        machine, or 8, whichever is less.  If you have not called either of
  125.        the thread creation routines already, then MMPP__SSEETTUUPP is invoked
  126.        automatically when the first parallel region is entered.  If the
  127.        MMPP__SSEETTUUPP environment variable is set, then the MMPP__SSEETTUUPP routine is
  128.        called during Fortran initialization, before any user code is
  129.        executed.
  130.  
  131.      * MMPP__NNUUMMTTHHRREEAADDSS returns the number of threads that would participate
  132.        in an immediately following parallel region.  If the threads have
  133.        already been created, it returns the current number of threads.  If
  134.        the threads have not been created, it returns the current default
  135.        number of threads.  The count includes the master thread.  Knowing
  136.        this count can be useful in optimizing certain kinds of parallel
  137.        loops by hand, but this function has the side effect of freezing the
  138.        number of threads to the returned value.  As a result, this routine
  139.        should be used sparingly.  To determine the number of threads
  140.        without this side effect, see the description for the
  141.        MMPP__SSUUGGGGEESSTTEEDD__NNUUMMTTHHRREEAADDSS routine on this man page.
  142.  
  143.      * MMPP__SSEETT__NNUUMMTTHHRREEAADDSS sets the current default number of threads to the
  144.        specified value.  Note that this call does not directly create the
  145.        threads; it only specifies the number that a subsequent MMPP__SSEETTUUPP
  146.        call should use.  If the MMPP__SSEETT__NNUUMMTTHHRREEAADDSS environment variable is
  147.        set, it acts like an implicit call to MMPP__SSEETT__NNUUMMTTHHRREEAADDSS during
  148.        program startup.  For more information on the MMPP__SSEETT__NNUUMMTTHHRREEAADDSS
  149.        environment variable, see the ppee__eennvviirroonn(5) man page.
  150.  
  151.        For convenience when operating among several machines with different
  152.        numbers of CPUs, the _n_u_m argument to MMPP__SSEETT__NNUUMMTTHHRREEAADDSS can be set to
  153.        an expression involving integer literals; the binary operators ++ or
  154.        --; the binary functions mmiinn and mmaaxx; and the special symbolic value
  155.        aallll.  The aallll specification requests the total number of available
  156.        CPUs on the current machine.
  157.  
  158.        For example, the following simple specification sets the number of
  159.        threads to 7, which may be a fine choice on an 8 CPU machine, but
  160.        would be a very bad choice on a 4 CPU machine:
  161.  
  162.           setenv MP_SET_NUMTHREADS 7
  163.  
  164.        A better specification would be the following, which sets the number
  165.        of threads to be one less than the number of CPUs on the current
  166.        machine (but always at least one):
  167.  
  168.           setenv MP_SET_NUMTHREADS "max(1,all-1)"
  169.  
  170.        If your configuration includes some machines with large numbers of
  171.        CPUs, setting an upper bound is a good idea.  A specification such
  172.        as the following requests no more than 4 cpus:
  173.  
  174.           setenv MP_SET_NUMTHREADS "min(all,4)"
  175.  
  176.        For compatibility with earlier releases, NNUUMM__TTHHRREEAADDSS is supported as
  177.        a synonym for MMPP__SSEETT__NNUUMMTTHHRREEAADDSS.
  178.  
  179.      * MMPP__MMYY__TTHHRREEAADDNNUUMM returns an integer between 00 and _n - 1, where _n is
  180.        the value returned by MMPP__NNUUMMTTHHRREEAADDSS.  The master process is always
  181.        thread 0.  This routine is occasionally useful for optimizing
  182.        certain kinds of loops by hand.
  183.  
  184.      * MMPP__IISS__MMAASSTTEERR returns 1 if called by the master process, 0 otherwise.
  185.  
  186.      * MMPP__SSEETTLLOOCCKK provides convenient (though limited) access to the
  187.        locking routines.  The convenience is that no set up need be done;
  188.        it may be called directly without any preliminaries.  The limitation
  189.        is that there is only one lock.  It is analogous to the
  190.        uusssseettlloocckk(3P) routine, but it accepts no arguments and does not
  191.        return a value.  This is useful for serializing access to shared
  192.        variables (for example, counters) in a parallel region.  Note that
  193.        it will frequently be necessary to declare those variables as
  194.        VVOOLLAATTIILLEE to ensure that the optimizer does not assign them to a
  195.        register.  For information on the VVOOLLAATTIILLEE statement, see your
  196.        compiler's reference manual.
  197.  
  198.      * MMPP__SSUUGGGGEESSTTEEDD__NNUUMMTTHHRREEAADDSS uses its _n_u_m argument as a hint about how
  199.        many threads to use in subsequent parallel regions.  It returns the
  200.        previous value of the number of threads to be employed in parallel
  201.        regions.  It does not affect currently executing parallel regions,
  202.        if any.  The implementation may ignore this hint depending on
  203.        factors such as overall system load.  This routine can also be
  204.        called with _n_u_m = 0, in which case it simply returns the number of
  205.        threads to be employed in parallel regions without the side effect
  206.        present in MMPP__NNUUMMTTHHRREEAADDSS.
  207.  
  208.      * MMPP__UUNNSSEETTLLOOCCKK is the companion routine for MMPP__SSEETTLLOOCCKK.
  209.  
  210.      * MMPP__BBAARRRRIIEERR provides a simple interface to a single bbaarrrriieerr(3P).  It
  211.        can be used inside a parallel loop to force a barrier
  212.        synchronization to occur among the parallel threads.  The routine
  213.        accepts no arguments, returns no value, and does not require any
  214.        initialization.
  215.  
  216.      * MMPP__IINN__DDOOAACCRROOSSSS__LLOOOOPP determines whether or not execution is currently
  217.        inside a parallel loop.  This can be useful if you have an external
  218.        routine that can be called both from inside a parallel loop and also
  219.        from outside a parallel loop and if the routine must do different
  220.        things depending on whether it is being called in parallel or not.
  221.  
  222.      * MMPP__SSEETT__SSLLAAVVEE__SSTTAACCKKSSIIZZEE specifies the stack _s_i_z_e (in bytes) to be
  223.        used by the slave processes when they are created by sspprrooccsspp(2).
  224.        The default size is 16MB.  Note that slave processes only allocate
  225.        their local data onto their stack.  Shared data (even if allocated
  226.        on the master's stack) is not counted.
  227.  
  228.      * MMPP__SSHHMMEEMM__GGEETT3322, MMPP__SSHHMMEEMM__PPUUTT3322, MMPP__SSHHMMEEMM__IIGGEETT3322, MMPP__SSHHMMEEMM__IIPPUUTT3322,
  229.        MMPP__SSHHMMEEMM__GGEETT6644, MMPP__SSHHMMEEMM__PPUUTT6644, MMPP__SSHHMMEEMM__IIGGEETT6644, and MMPP__SSHHMMEEMM__IIPPUUTT6644
  230.        specify SHMEM-like operations.  These routines allow you to manage
  231.        communication explicitly, for reasons of performance or style, in a
  232.        manner similar to SHMEM, one-sided communication, or message
  233.        passing.  The operations allow a thread to fetch from (get) and send
  234.        to (put) data belonging to other threads.
  235.  
  236.        The MMPP__SSHHMMEEMM routines can be used with OpenMP directives and with
  237.        the Silicon Graphics DDOOAACCRROOSSSS directives.  These routines are
  238.        identical to the original SHMEM routines, but they are prefixed by
  239.        MMPP__.  For information on the SHMEM routines, see the iinnttrroo__sshhmmeemm(3)
  240.        man page or contact your sales representative.
  241.  
  242.        When using the MMPP__SSHHMMEEMM routines in a Fortran program, the data to
  243.        be operated on must be in a common block and each thread must have
  244.        its own private copy of the data being operated upon.  If you are
  245.        using OpenMP directives, use the TTHHRREEAADDPPRRIIVVAATTEE directive to declare
  246.        the data to be private.  If you are using the DDOOAACCRROOSSSS directive,
  247.        declare the data to be private by specifying it as an argument to
  248.        the --XXllooccaall option on the lldd(1) command.  (These methods are
  249.        equivalent to using the TTAASSKKCCOOMMMMOONN directive in a Fortran program on
  250.        a UNICOS system.)  A GGEETT routine requires that _s_o_u_r_c_e point to
  251.        private data.  A PPUUTT routine requires that _t_a_r_g_e_t point to private
  252.        data.
  253.  
  254.        For more information on the OpenMP directives and the DDOOAACCRROOSSSS
  255.        directive, see your compiler reference manuals.  Note that the
  256.        DDOOAACCRROOSSSS directive is outmoded; the preferred alternative is the
  257.        OpenMP DDOO directive.
  258.  
  259.        These routines accept the following arguments:
  260.  
  261.        _t_a_r_g_e_t    For the 32-bit versions of these routines, _t_a_r_g_e_t is a
  262.                  pointer to a 32-bit quantity.  For the 64-bit versions of
  263.                  these routines, _t_a_r_g_e_t is a pointer to a 64-bit quantity.
  264.                  For a PPUUTT operation, _t_a_r_g_e_t must be private data.
  265.  
  266.        _s_o_u_r_c_e    For the 32-bit versions of these routines, _t_a_r_g_e_t is a
  267.                  pointer to a 32-bit quantity.  For the 64-bit versions of
  268.                  these routines, _t_a_r_g_e_t is a pointer to a 64-bit quantity.
  269.                  For a GGEETT operation, _s_o_u_r_c_e must be private data.
  270.  
  271.        _l_e_n_g_t_h    Specifies the number of elements to be copied, in units of
  272.                  32-bit or 64-bit elements, as appropriate.
  273.  
  274.        _s_o_u_r_c_e__t_h_r_e_a_d, _t_a_r_g_e_t__t_h_r_e_a_d
  275.                  Specify the numeric identifier of the remote source or
  276.                  target thread.
  277.  
  278.        _s_o_u_r_c_e__i_n_c, _t_a_r_g_e_t__i_n_c
  279.                  Specified for the strided routines, which are those with
  280.                  __IIGGEETT and __IIPPUUTT in their names.  Specifies the increment,
  281.                  in units of 32-bit or 64-bit elements, along each of
  282.                  _s_o_u_r_c_e and _t_a_r_g_e_t, when performing the data transfer.  The
  283.                  number of elements copied during a strided get or put
  284.                  operation is determined by _l_e_n_g_t_h.
  285.  
  286.        You can call the MMPP__SSHHMMEEMM routines only after the threads have been
  287.        created, typically in the first DDOO/DDOOAACCRROOSSSS/PPAARRAALLLLEELL region.
  288.        Performing these operations while the program is still serial leads
  289.        to a runtime error because each thread's copy has not yet been
  290.        created.  As library routines, they incur some runtime overhead.
  291.  
  292. DDIIRREECCTTIIVVEESS
  293.      The MIPSpro Fortran 77 and MIPSpro 7 Fortran 90 compilers allow you to
  294.      apply the capabilities of a Silicon Graphics multiprocessor computer
  295.      to the execution of a single job.  By coding a few simple directives,
  296.      the compiler splits the job into concurrently executing pieces,
  297.      thereby decreasing the wall-clock run time of the job.
  298.  
  299.      Directives enable, disable, or modify a feature of the compiler.
  300.      Essentially, directives are command line options specified within the
  301.      input file instead of on the command line.  Unlike command line
  302.      options, directives have no default setting. To invoke a directive,
  303.      you must either toggle it on or set a desired value for its level.
  304.  
  305.      Directives placed on the first line of the input file are called
  306.      _g_l_o_b_a_l _d_i_r_e_c_t_i_v_e_s.  The compiler interprets them as if they appeared
  307.      at the top of each program unit in the file.  Use global directives to
  308.      ensure that the program is compiled with the correct command line
  309.      options.  Directives appearing anywhere else in the file apply only
  310.      until the end of the current program unit.  The compiler resets the
  311.      value of the directive to the global value at the start of the next
  312.      program unit.  You can set the global value using a command line
  313.      option or a global directive.
  314.  
  315.      Some command line options act like global directives.  Other command
  316.      line options override directives.  Many directives have corresponding
  317.      command line options.  If you specify conflicting settings in the
  318.      command line and a directive, the compiler chooses the most
  319.      restrictive setting.  For Boolean options, if either the directive or
  320.      the command line has the option turned off, it is considered off.  For
  321.      options that require a numeric value, the compiler uses the minimum of
  322.      the command line setting and the directive setting.
  323.  
  324.      The Fortran compilers accept directives that generate code that can be
  325.      run in parallel.  The compiler directives look like Fortran comments.
  326.      If multiprocessing is not turned on, these statements are treated as
  327.      comments.  This allows the identical source to be compiled with a
  328.      single-processing compiler or by Fortran without the multiprocessing
  329.      option.
  330.  
  331.      The following directives sets are supported for multiprocessing:
  332.  
  333.      * The OpenMP Fortran API directives.  These portable, standard,
  334.        multiprocessing directives are supported on IRIX and UNICOS systems.
  335.  
  336.      * The Origin series directives.  These directives are developed
  337.        specifically for the Origin series systems.
  338.  
  339.      * Other directive sets, including the PCF directives and the
  340.        Autotasking directives, are supported for multiprocessing, but they
  341.        are outmoded.
  342.  
  343.      For more information on any of the multiprocessing directives, see the
  344.      _M_I_P_S_p_r_o _F_o_r_t_r_a_n _7_7 _P_r_o_g_r_a_m_m_e_r'_s _G_u_i_d_e or the _M_I_P_S_p_r_o _7 _F_o_r_t_r_a_n _9_0
  345.      _C_o_m_m_a_n_d_s _a_n_d _D_i_r_e_c_t_i_v_e_s _R_e_f_e_r_e_n_c_e _M_a_n_u_a_l.
  346.  
  347. QQUUEERRYY IINNTTRRIINNSSIICCSS
  348.      The DDSSMM(3I) man page describes several query intrinsics for
  349.      distributed arrays.  You can use these intrinsics to obtain
  350.      information about an individual dimension of a distributed array
  351.  
  352. CCOOMMMMAANNDD LLIINNEE SSUUPPPPOORRTT
  353.      Various command line options must be in effect in order for
  354.      multiprocessing to occur.  The following command line options are used
  355.      when multiprocessing is desired:
  356.  
  357.      * The --mmpp option enables all multiprocessing directives.
  358.  
  359.      * The --MMPP:: option selectively disables particular directive sets and
  360.        controls other aspects of multiprocessing.  This option must be
  361.        specified in conjunction with the --mmpp option.  For example, to
  362.        disable the OpenMP directives, you would include both --mmpp and
  363.        --MMPP::ooppeenn__mmpp==OOFFFF on your command line.
  364.  
  365.      For more information on these command line options, see the ff7777(1) or
  366.      ff9900(1) man pages.
  367.  
  368. EEXXAAMMPPLLEESS
  369.      Example 1.  In the following example, assume that the command line
  370.      includes --WWll,,--XXllooccaall,,mmyyccoommmmoonn__, which ensures that each thread has a
  371.      private copy of XX and YY:
  372.  
  373.           INTEGER X
  374.           REAL(KIND=8), Y(100)
  375.           COMMON /MYCOMMON/ X, Y
  376.  
  377.      Example 2.  The following example copies the value of XX on thread 3
  378.      into the private copy of XX for the current thread:
  379.  
  380.           CALL MP_SHMEM_GET32 (X, X, 1, 3)
  381.  
  382.      Example 3.  The following example copies the value of LLOOCCAALLVVAARR into
  383.      the thread 5 copy of XX:
  384.  
  385.           CALL MP_SHMEM_PUT32 (X, LOCALVAR, 1, 5)
  386.  
  387.      Example 4.  The following example fetches values from the thread 7
  388.      copy of array YY into LLOOCCAALLAARRRRAAYY:
  389.  
  390.           CALL MP_SHMEM_GET64 (LOCALARRAY, Y, 100, 7)
  391.  
  392.      Example 5.  The following example copies the value of every other
  393.      element of LLOOCCAALLAARRRRAAYY into the thread 9 copy of YY:
  394.  
  395.           CALL MP_SHMEM_IPUT64 (Y, LOCALARRAY, 2, 2, 50, 9)
  396.  
  397. SSEEEE AALLSSOO
  398.      ff7777(1), ff9900(1)
  399.  
  400.      bblloocckkpprroocc(2), eexxiitt(2), sspprrooccsspp(2),
  401.  
  402.      iinnttrroo__sshhmmeemm(3)
  403.  
  404.      DDSSMM(3I), SSYYNNCC(3I)
  405.  
  406.      bbaarrrriieerr(3P), uusssseettlloocckk(3P),
  407.  
  408.      ppee__eennvviirroonn(5)
  409.  
  410.      _M_I_P_S_p_r_o _F_o_r_t_r_a_n _7_7 _P_r_o_g_r_a_m_m_e_r'_s _G_u_i_d_e
  411.  
  412.      _M_I_P_S_p_r_o _7 _F_o_r_t_r_a_n _9_0 _C_o_m_m_a_n_d_s _a_n_d _D_i_r_e_c_t_i_v_e_s _R_e_f_e_r_e_n_c_e _M_a_n_u_a_l
  413.  
  414.      This man page is available only online.
  415.